home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 June / PCWorld_2007-06_cd.bin / v cisle / tclock / tclocklight-040702-3.exe / source / property / alarmday.c next >
C/C++ Source or Header  |  2004-01-14  |  3KB  |  141 lines

  1. /*-------------------------------------------------------------
  2.   alarmday.c : "Day of Week" of alarm
  3.   (C) Kazuto Sato 1997-2003
  4.   For the license, please read readme.txt.
  5.   
  6.   Written by Kazubon, Nanashi-san
  7. ---------------------------------------------------------------*/
  8.  
  9. #include "tcprop.h"
  10.  
  11. /* Globals */
  12.  
  13. int SetAlarmDay(HWND hDlg, PALARMSTRUCT pAS);
  14.  
  15. /* Statics */
  16.  
  17. static BOOL CALLBACK AlarmDayProc(HWND, UINT, WPARAM, LPARAM);
  18. static void OnInit(HWND hDlg);
  19. static void OnOK(HWND hDlg);
  20. static void OnEveryDay(HWND hDlg);
  21.  
  22. static PALARMSTRUCT m_pAS;
  23.  
  24. /*------------------------------------------------
  25.   show dialog box
  26. --------------------------------------------------*/
  27. int SetAlarmDay(HWND hDlg, PALARMSTRUCT pAS)
  28. {
  29.     m_pAS = pAS;
  30.     return DialogBox(g_hInst, MAKEINTRESOURCE(IDD_ALARMDAY),
  31.         hDlg, AlarmDayProc);
  32. }
  33.  
  34. /*------------------------------------------------
  35.   dialog procedure
  36. --------------------------------------------------*/
  37. BOOL CALLBACK AlarmDayProc(HWND hDlg, UINT message,
  38.     WPARAM wParam, LPARAM lParam)
  39. {
  40.     switch(message)
  41.     {
  42.         case WM_INITDIALOG:
  43.             OnInit(hDlg);
  44.             return TRUE;
  45.         case WM_COMMAND:
  46.         {
  47.             WORD id; //, code;
  48.             id = LOWORD(wParam); // code = HIWORD(wParam);
  49.             switch(id)
  50.             {
  51.                 case IDC_ALARMDAY0:
  52.                     OnEveryDay(hDlg); break;
  53.                 case IDOK: OnOK(hDlg);
  54.                 case IDCANCEL: EndDialog(hDlg, id); break;
  55.             }
  56.             return TRUE;
  57.         }
  58.     }
  59.     return FALSE;
  60. }
  61.  
  62. /*------------------------------------------------
  63.   initialize
  64. --------------------------------------------------*/
  65. void OnInit(HWND hDlg)
  66. {
  67.     int i;
  68.     BOOL bAll;
  69.     
  70.     // common/tclang.c
  71.     SetDialogLanguage(hDlg, "AlarmDay", g_hfontDialog);
  72.     
  73.     bAll = TRUE;
  74.     for(i = 0; i < 7; i++)
  75.     {
  76.         if(m_pAS->wdays[i])
  77.         {
  78.             CheckDlgButton(hDlg, IDC_ALARMDAY1+i, TRUE);
  79.             bAll = FALSE;
  80.         }
  81.     }
  82.     
  83.     if(bAll)
  84.     {
  85.         CheckDlgButton(hDlg, IDC_ALARMDAY0, TRUE);
  86.         OnEveryDay(hDlg);
  87.     }
  88. }
  89.  
  90. /*------------------------------------------------
  91.   retreive setting
  92. --------------------------------------------------*/
  93. void OnOK(HWND hDlg)
  94. {
  95.     char s[80];
  96.     BOOL bAll;
  97.     int i;
  98.     
  99.     s[0] = 0;
  100.     bAll = TRUE;
  101.     for(i = 0; i < 7; i++)
  102.     {
  103.         if(IsDlgButtonChecked(hDlg, IDC_ALARMDAY1 + i))
  104.             wsprintf(s + strlen(s), "%d,", i);
  105.         else bAll = FALSE;
  106.     }
  107.     
  108.     if(bAll)
  109.         m_pAS->strWDays[0] = 0;
  110.     else
  111.     {
  112.         s[strlen(s) - 1] = 0;
  113.         strcpy(m_pAS->strWDays, s);
  114.     }
  115. }
  116.  
  117. /*------------------------------------------------
  118.    Every day
  119. --------------------------------------------------*/
  120. void OnEveryDay(HWND hDlg)
  121. {
  122.     int i;
  123.     
  124.     if(IsDlgButtonChecked(hDlg, IDC_ALARMDAY0))
  125.     {
  126.         for(i = 0; i < 7; i++)
  127.         {
  128.             CheckDlgButton(hDlg, IDC_ALARMDAY1 + i, TRUE);
  129.             EnableDlgItem(hDlg, IDC_ALARMDAY1+i, FALSE);
  130.         }
  131.     }
  132.     else
  133.     {
  134.         for(i = 0; i < 7; i++)
  135.         {
  136.             CheckDlgButton(hDlg, IDC_ALARMDAY1 + i, FALSE);
  137.             EnableDlgItem(hDlg, IDC_ALARMDAY1+i, TRUE);
  138.         }
  139.     }
  140. }
  141.